// Copyright 2022 PingCAP, Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include <AggregateFunctions/UniqCombinedBiasData.h>

namespace DB
{
namespace
{
const UniqCombinedBiasData::InterpolatedData raw_estimates{{99791.8496, 101386.91930000001, 105450.95623333333, 108128.01393333334, 110851.10286666667, 113620.01383333335, 116434.98796666665, 119295.74893333332, 122202.58199999998, 124783.45270000001, 127775.84493333333, 130432.03390000002, 133122.13506666667, 136239.7482, 139004.69996666667, 141803.40813333335, 144228.62236666665, 147089.61343333335, 149984.35636666667, 152912.8223666667, 155449.4413666667, 158440.23733333332, 161029.4043, 164080.25746666666, 166720.31723333334, 169384.27826666666, 172521.4491666667, 175235.4233, 177971.46556666668, 180730.04403333334, 183510.69883333333, 186313.77773333332, 189138.67343333332, 191985.62490000002, 194853.55733333333, 197259.4243333333, 200165.33826666666, 203093.2792, 205550.0133666667, 208515.49296666667, 211500.27113333336, 214002.73933333336, 217022.66503333332, 219554.61286666666, 222611.62203333332, 225172.43516666666, 228261.63369999998, 230849.9269333333, 233450.9665, 236588.48176666666, 239217.14506666665, 241858.01729999995, 245040.88769999996, 247707.505, 250385.32816666667, 253072.74516666666, 255772.3767333333, 259026.62416666665, 261750.1933, 264484.4988666667, 267229.4741, 269983.9762, 272747.6032, 275521.9937, 278306.35263333336, 281100.67233333335, 283902.65756666666, 286716.28403333336, 289537.95599999995, 292368.9353666667, 295207.7315, 298055.9653333333, 300911.9654666667, 303204.35336666665, 306077.9537333333, 308958.00193333335, 311845.22890000005, 314741.81600000005, 317644.8173333333, 319972.31696666667, 322888.63776666665, 325811.89053333335, 328741.73743333324, 331091.32163333334, 334034.29806666664, 336984.6469666666, 339939.86216666666, 342309.7939, 345278.14656666666, 348252.3204333333, 350635.0094666667, 353618.8034000001, 356610.7431333333, 359005.6872333333, 362005.8481, 365011.9431333333, 367422.15616666665, 370439.9724666667, 373460.6025, 375879.31826666667, 378908.1752, 381335.98703333334, 384373.7107666666, 387416.2068333333, 389852.7087666667, 392901.8697, 395343.33469999995, 398401.5141333333, 400851.9174, 403917.6844666666, 406371.6598333334, 409440.80490000005, 412517.26203333336, 414981.9741666666, 418063.8305, 420530.6776, 423616.6512666666, 426088.72699999996, 429181.1127666666, 431657.64166666666, 434757.3337, 437235.97023333336, 440338.2023666667, 442823.12679999997, 445932.7757666667, 448419.81309999997, 451533.39386666665, 454026.96746666665, 457147.8259333333, 459643.8253666666, 462140.6687333334, 465264.5323, 467767.3770333333, 470899.63109999994, 473406.5693999999, 476540.8793333333, 479051.11850000004, 482189.9576, 484701.15849999996, 487836.66456666664, 490348.32859999995, 492863.5349666667, 496009.21856666665, 498525.42956666666, 501674.7545333333, 504197.08666666667, 507345.7158333334, 509865.2856, 512385.7114666667, 515538.75786666665, 518061.9924333333, 521216.2575333333, 523741.7463333334, 526898.6196333334, 529426.4153666666, 531957.1346999999, 535122.4158, 537654.0189, 540820.3046333335, 543353.1055, 545886.3092666665, 549053.4182666666, 551588.0846666667, 554757.5437333334, 557292.4032000001, 559828.7957, 562997.8541333332, 565534.2980666666, 568709.6649999999, 571249.7172666666, 573790.0703666667, 576966.0044666667, 579505.9694666667, 582682.2277, 585223.6823, 587764.2020666667, 590940.0571666666, 593483.1912666665, 596026.3725, 599205.4451, 601746.4072333333, 604921.6576333332, 607463.0489333333, 610007.9545333334, 613191.4748666667, 615738.8463666667, 618922.8917333334, 621470.0042333334, 624017.6801333333, 627203.1910333333, 629749.1271666667, 632298.0367666667, 635482.3311666666, 638030.0856333333, 641214.3490333334, 643760.2273333333, 646307.8729, 649497.0210000001, 652049.6203333334, 654923.103}};

const UniqCombinedBiasData::InterpolatedData biases{{83406.8496, 84682.41930000001, 83634.45623333333, 81199.51393333334, 78810.60286666667, 76467.51383333335, 74170.48796666665, 71919.24893333334, 69714.082, 67821.95270000001, 65702.34493333333, 63885.5339, 62102.63506666666, 60108.2482, 58400.199966666674, 56725.90813333334, 55317.122366666656, 53705.113433333325, 52126.856366666674, 50582.32236666667, 49284.94136666667, 47802.73733333333, 46557.904299999995, 45135.75746666667, 43941.817233333335, 42771.77826666667, 41435.949166666665, 40315.9233, 39217.96556666667, 38142.54403333333, 37089.19883333333, 36058.277733333336, 35049.17343333334, 34062.1249, 33096.05733333334, 32306.924333333332, 31378.83826666667, 30472.7792, 29734.513366666666, 28865.99296666667, 28016.77113333333, 27324.23933333333, 26510.165033333327, 25847.112866666674, 25070.122033333333, 24435.935166666663, 23691.133699999995, 23084.426933333332, 22490.466500000006, 21793.981766666664, 21227.645066666664, 20673.517299999996, 20022.387699999996, 19494.005, 18976.828166666663, 18469.24516666666, 17973.876733333327, 17394.124166666665, 16922.693300000003, 16461.998866666672, 16011.974100000001, 15571.476200000005, 15140.103200000012, 14719.493699999992, 14308.852633333338, 13908.172333333341, 13515.15756666667, 13133.78403333333, 12760.455999999986, 12396.435366666663, 12040.231499999994, 11693.465333333335, 11354.465466666676, 11090.853366666668, 10769.453733333328, 10454.501933333328, 10146.728900000007, 9848.316, 9556.31733333334, 9327.816966666656, 9049.137766666672, 8777.390533333344, 8512.237433333328, 8305.821633333331, 8053.79806666668, 7809.146966666663, 7569.362166666669, 7383.2939, 7156.646566666673, 6935.8204333333315, 6762.50946666667, 6551.303400000004, 6348.243133333327, 6187.18723333332, 5992.348100000003, 5803.44313333333, 5657.656166666672, 5480.472466666678, 5306.102499999989, 5168.818266666669, 5002.675199999988, 4874.487033333319, 4717.210766666666, 4564.70683333333, 4445.208766666678, 4299.36970000001, 4184.834699999997, 4048.0141333333354, 3942.4174000000057, 3813.1844666666584, 3711.159833333329, 3585.304899999998, 3466.7620333333325, 3375.4741666666523, 3262.3304999999914, 3173.1775999999954, 3064.151266666653, 2980.226999999994, 2877.6127666666675, 2798.141666666663, 2702.8336999999883, 2625.4702333333166, 2532.7023666666646, 2461.626799999998, 2376.275766666678, 2307.313100000019, 2225.89386666668, 2163.4674666666738, 2089.325933333341, 2029.3253666666667, 1970.1687333333346, 1899.032300000011, 1845.8770333333425, 1783.1310999999987, 1734.0693999999978, 1673.3793333333258, 1627.618499999992, 1571.457600000004, 1526.6585000000002, 1467.1645666666639, 1422.8285999999982, 1382.0349666666687, 1332.7185666666676, 1292.9295666666683, 1247.2545333333353, 1213.5866666666698, 1167.2158333333402, 1130.785599999993, 1095.21146666667, 1053.2578666666716, 1020.4924333333329, 979.7575333333225, 949.2463333333241, 911.1196333333113, 882.9153666666631, 857.6347000000145, 827.915800000017, 803.5189000000051, 774.8046333333477, 751.6055000000051, 728.8092666666489, 700.9182666666651, 679.5846666666524, 654.0437333333539, 632.9032000000007, 613.2956999999975, 587.3541333333123, 567.7980666666408, 548.164999999979, 532.2172666666642, 516.5703666666523, 497.5044666666848, 481.4694666666522, 462.72769999998854, 448.1823000000052, 432.7020666666601, 413.5571666666656, 400.69126666665153, 387.8724999999977, 371.94510000001173, 356.90723333331215, 337.1576333333117, 322.54893333330983, 311.4545333333469, 299.97486666667584, 291.3463666666842, 280.39173333333264, 271.5042333333404, 263.1801333333521, 253.69103333332654, 243.62716666665315, 236.53676666668616, 225.83116666666078, 217.58563333332617, 206.84903333332235, 196.72733333332386, 188.37289999997788, 182.52100000000792, 179.12033333334452, 177.1030000000028}};

} // namespace

double UniqCombinedBiasData::getThreshold()
{
    return 177700;
}

const UniqCombinedBiasData::InterpolatedData & UniqCombinedBiasData::getRawEstimates()
{
    return raw_estimates;
}

const UniqCombinedBiasData::InterpolatedData & UniqCombinedBiasData::getBiases()
{
    return biases;
}

} // namespace DB
